<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button>按钮1</button>
    <button>按钮2</button>
    <button>按钮3</button>
    <script>

        // 1. 块级作用域可以相互嵌套
        // {
        //     let a = 12;

        //     {
        //         let b = 5;

        //         {

        //             let c = 6;
        //         }

        //         console.log(a);
        //         console.log(c);
        //     }
        
            
        // }

        //1. let命令不存在变量提升
        
        // var a;
        // console.log(a);
        // a=123;


        // Uncaught ReferenceError: Cannot access 'a' before initialization
        // console.log(a);
        // let a= 12;


        // 2. 不允许重复声明
        // var a= 12;
        // var a= 6;

        // console.log(a);

        // let a = 12;
        // // Uncaught SyntaxError: Identifier 'a' has already been declared
        // let a = 5;

        // console.log(a);


        // 3. 块级作用域的出现，实际上使得获得广泛应用的匿名立即执行函数表达式不再必要了
        // let arr = [1,2,3]
        // // for(var i = 0;i<arr.length;i++){
        // //     ;(function(i){
        // //         arr[i] = function(){
        // //             console.log(i);
        // //         }
        // //     })(i);
        // // };

        // for(let i = 0;i<arr.length;i++){
        //     arr[i] = function(){
        //         console.log(i);
        //     }
        // };
    

        // console.log(arr);

        // arr[1]();

        // 4. let 是在代码块内有效，var 是在全局范围内有效

        // {
        //     let a = 12;

        //     var b = 5;


        // }

        // console.log(b);
        // console.log(a);


        // 5. 不影响作用域链

        // {
        //     {
        //         {

        //         }
        //     }
        // }

        // function(){
        //     function(){
        //         function(){

        //         }
        //     }
        // }

        // 6. 不再是顶层全局对象的属性

        // var  a = 123;
        // let  aa = 456; //不保存在window对象下

        // console.log(window);
        



      
       
    </script>
</body>
</html>